#include <iostream>
using namespace std;

//纯虚函数 和 抽象类（abstract）
//纯虚函数：在多态中 父类的虚函数的实现基本没有什么意义 ， 主要的作用是调用子类重写的内容 ， 故将其虚函数可以改为纯虚函数
//主要有一个纯虚函数 ，这个 类 称为抽象类

//抽象类的特点： 1. 无法实例化对象
//            2.抽象类的子类 必须要重写父类中的纯虚函数 ，否则也属于抽象类

class Base {
public:
    virtual void func() = 0; //纯虚函数 : 子类必须要将其重写 ，否则也为抽象类 ， 无法实例化对象
};
class son : public Base {
public:
    //override 检查重写父类纯虚函数是否覆盖
    virtual void func() override {
        cout << "son func" << endl;
    }
};
int main(){
   // Base b;  纯虚函数  无法实例化对象
    son s;
    s.func();
    //多态的调用： 父类的指针 指向子类的对象
    Base * b = new son;
    b -> func();
    delete b;
    return 0;
}